home *** CD-ROM | disk | FTP | other *** search
/ Loadstar 7 / 007.d81 / loan calculator (.txt) < prev    next >
Commodore BASIC  |  2022-08-26  |  4KB  |  132 lines

  1. 0 rem**********************************
  2. 1 rem*                                *
  3. 2 rem*       loan calculator          *
  4. 3 rem*                                *
  5. 4 rem*copyright (c) 1984 by h.l.boelte*
  6. 5 rem*                                *
  7. 6 rem*     all rights reserved        *
  8. 7 rem*                                *
  9. 8 rem**********************************
  10. 10 poke53280,0:poke53281,0
  11. 15 p$=""
  12. 20 ca=1:e=0:a$=""::dimcs$(5,8):f$="      [146]":f1$="      ":f2$="[157][157][157][157][157][157]"
  13. 30 def fna(x)=int(x*100+.5)/100
  14. 40 gosub550:gosub800
  15. 45 gosub550
  16. 50 forl=1to5:forl1=1to8:cs$(l,l1)=f$:next:next
  17. 60 cs$(1,0)="amount ":cs$(2,0)=" years ":cs$(3,0)="  rate ":cs$(4,0)="payment"
  18. 70 cs$(0,0)="       ":cs$(0,1)="case 1":cs$(0,2)="case 2":cs$(0,3)="case 3"
  19. 80 cs$(0,4)="case 4":cs$(0,5)="case 5":cs$(0,6)="case 6":cs$(0,7)="case 7"
  20. 90 cs$(0,8)="case 8":gosub600
  21. 100 forl1=1to3:gosub450:a$=""
  22. 105 printleft$(p$,20)cs$(0,ca)" - "cs$(l1,0);
  23. 108 input" ";a$
  24. 109 ifa$=""andval(cs$(l1,ca))>0thengosub180:goto130
  25. 110 ifval(a$)=0then2000
  26. 111 ifl1=1andval(a$)>999999then2000
  27. 112 a$=left$(a$,6)
  28. 113 if(l1=2orl1=3)andval(a$)>50then2000
  29. 114 ifcs$(1,ca)=f$then119
  30. 115 cs$(4,ca)=f$
  31. 119 cs$(l1,ca)=a$:a$="":gosub610
  32. 130 gosub600:next:gosub180
  33. 140 gosub3010
  34. 150 geta$:ifa$=""then150
  35. 160 a=asc(a$)-132:ifa<1ora>4then150
  36. 163 onagoto700,4000,170,5000
  37. 165 goto150
  38. 170 gosub450:gosub3000
  39. 171 ca=1
  40. 172 ifcs$(l1,ca)<>f$thenifca<8thenca=ca+1:goto172
  41. 173 ifca=8then178
  42. 175 gosub600:goto100
  43. 178 gosub9000:gosub3010:goto150
  44. 180 l9=l1:l1=4:pv=val(cs$(1,ca)):yr=val(cs$(2,ca)):i=val(cs$(3,ca))
  45. 190 ir=i/100/12:yr=yr*12
  46. 200 mp=pv*ir/(1-((1+ir)^-yr))
  47. 210 s$=str$(fna(mp)):ifmp>999999thens$=" error"
  48. 211 iflen(s$)>6thens$=mid$(s$,2,6)
  49. 220 cs$(l1,ca)=s$:iflen(s$)<6thengosub610
  50. 230 s$="":l1=l9:gosub450:gosub600:return
  51. 450 printleft$(p$,20)"                                       ":return
  52. 550 rem *** header ***
  53. 560 print"[147][158]                                         "spc(38)"  ";
  54. 570 print"            loan  calculator            "spc(38)" ";
  55. 580 print"                                        [146]"
  56. 590 return
  57. 600 printleft$(p$,6):ifca>4then620
  58. 605 forl3=0to4:print:forl4=0to4:printf1$;f2$;cs$(l3,l4)"  ";:next:next:return
  59. 610 cs$(l1,ca)=left$(f1$,6-len(cs$(l1,ca)))+cs$(l1,ca):return
  60. 620 forl3=0to4:print:printcs$(l3,0)"  ";:forl4=ca-3toca:printf1$;f2$;
  61. 625 printcs$(l3,l4)"  ";:next:next:return
  62. 700 open4,4
  63. 705 forl3=0to4:print#4:forl4=0to8
  64. 706 ifcs$(l3,l4)<>f$thenprint#4,cs$(l3,l4)"  ";
  65. 707 ifcs$(l3,l4)=f$thenprint#4,"     0  ";
  66. 708 next:next:print#4,chr$(13):close4
  67. 710 goto150
  68. 800 print""spc(2)"copyright (c) 1984 by h. l. boelte"
  69. 805 print""spc(10)"all rights reserved"
  70. 810 print""spc(8)"do you want help (y/n)?"
  71. 820 geth$:ifh$=""then820
  72. 830 ifh$="n"thenreturn
  73. 840 ifh$="y"thengosub900:goto45
  74. 850 goto820
  75. 900 gosub550
  76. 910 print"  loan calculator will calculate the"
  77. 920 print" monthly payment on any amount up to"
  78. 930 print" $999999 for up to 8 cases allowing you
  79. 940 [153]" to compare alternatives."
  80. 950 [153]"  you can edit your entries and print
  81. 960 print" to your printer for a permanent record"
  82. 970 print"  to get the maximum cases on screen,"
  83. 971 print" your inputs are limited as follows:"
  84. 972 print"    amount - 6 characters or 999999"
  85. 973 print"    years  - 50     rate - 50"
  86. 990 print"        press any key when ready [146]"
  87. 1000 geta$:ifa$=""then1000
  88. 1010 gosub550
  89. 1020 print"  loan amounts can be entered as 999.99"
  90. 1030 print" (you don't use the $ sign); however,"
  91. 1035 print" if it is more than six characters long"
  92. 1040 print" it will be reduced to six characters."
  93. 1050 print" this applies to payments also."
  94. 1060 print"  years can be entered as a fraction"
  95. 1070 print" if necessary.  for example;  if you"
  96. 1080 print" want to find the payment on a 42 month"
  97. 1090 print" loan, enter 3.5 for years."
  98. 1100 print"  interest rate must be entered as 11.5"
  99. 1110 print" not .115 to get the right answer."
  100. 1800 print"        press any key when ready [146]"
  101. 1810 geta$:ifa$=""then1810
  102. 1910 return
  103. 2000 forl9=1to5
  104. 2010 printleft$(p$,24)spc(7)" illegal input-try again ":fort=1to500:next
  105. 2020 printleft$(p$,24)spc(7)" illegal input-try again [146]":fort=1to500:next
  106. 2030 next:a$="":gosub3000:gosub450:goto105
  107. 3000 printleft$(p$,24)"                                       ":return
  108. 3005 printleft$(p$,22)"                                       ":return
  109. 3010 printleft$(p$,24)"f1[146]=print  f3[146]=edit  f5[146]=next case  f7[146]=opt":return
  110. 3020 printleft$(p$,24)" f2[146]=erase  f4[146]=quit  f6[146]=help  f8[146]=return":return
  111. 4000 e=ca:gosub3000:printleft$(p$,22)"edit which case (1-8)";
  112. 4010 inputa$:a=val(a$):ifa<1ora>8then4000
  113. 4020 ca=a:gosub3005:ca=a:goto90
  114. 5000 gosub3000:gosub3020:x=ca
  115. 5050 geta$:ifa$=""then5050
  116. 5060 a=asc(a$)-136:ifa<1ora>4then5050
  117. 5070 onagoto6000,7000,8000,5080:goto5050
  118. 5080 gosub3000:gosub3010:gosub600:goto150
  119. 6000 gosub3000:printleft$(p$,22)"erase all cases (y/n)";
  120. 6010 inputa$:ifa$="y"thenca=1:goto45
  121. 6020 ifa$="n"thengosub3005:gosub3020:goto5050
  122. 6025 goto6000
  123. 7000 poke53280,5:poke53281,0:print"[144]";
  124. 7010 print"[147]load"chr$(34)"payload"chr$(34)",8":print"run"
  125. 7020 poke631,13:poke632,13:poke198,2
  126. 7030 end
  127. 8000 gosub900:gosub550:gosub600:goto5000
  128. 9000 forl9=1to5
  129. 9010 printleft$(p$,24)"    all cases used-use edit or erase  ":fort=1to500:next
  130. 9020 printleft$(p$,24)"    all cases used-use edit or erase  ":fort=1to500:next
  131. 9030 next:a$="":return
  132.